/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * FrmParam.java
 *
 * Created on 30/Out/2011, 17:16:42
 */

package comprador;

import javax.swing.JOptionPane;
import util.GUI;


public class FrmParam extends javax.swing.JFrame {
	private Agente agente = null;
	private boolean okClicked = false;

    /** Creates new form FrmParam */
    public FrmParam(Agente agente) {
		this.agente = agente;
        initComponents();

		GUI.centerWindowOnScreen(this);
		GUI.setDefaultButton(this, cmdOk);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        lblNome = new javax.swing.JLabel();
        txtNome = new javax.swing.JTextField();
        lblPrecoMin = new javax.swing.JLabel();
        txtPrecoMin = new javax.swing.JTextField();
        lblPrecoMax = new javax.swing.JLabel();
        txtPrecoMax = new javax.swing.JTextField();
        lblPrazoMax = new javax.swing.JLabel();
        txtPrazoMax = new javax.swing.JTextField();
        lblQualidadeMin = new javax.swing.JLabel();
        txtQualidadeMin = new javax.swing.JTextField();
        jPanel2 = new javax.swing.JPanel();
        cmdOk = new javax.swing.JButton();
        cmdCancelar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        setTitle(agente.nome);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Parâmetros do produto a comprar", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION));
        jPanel1.setLayout(new java.awt.GridLayout(5, 2, 5, 5));

        lblNome.setText("Nome:");
        jPanel1.add(lblNome);
        jPanel1.add(txtNome);

        lblPrecoMin.setText("Preço mínimo (€):");
        jPanel1.add(lblPrecoMin);

        txtPrecoMin.setToolTipText("Um guia para o preço objectivo inicial");
        jPanel1.add(txtPrecoMin);

        lblPrecoMax.setText("Preço máximo (€):");
        jPanel1.add(lblPrecoMax);
        jPanel1.add(txtPrecoMax);

        lblPrazoMax.setText("Prazo máximo de entrega (s):");
        jPanel1.add(lblPrazoMax);
        jPanel1.add(txtPrazoMax);

        lblQualidadeMin.setText("Qualidade mínima (1-5):");
        jPanel1.add(lblQualidadeMin);
        jPanel1.add(txtQualidadeMin);

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

        cmdOk.setText("Ok");
        cmdOk.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdOkActionPerformed(evt);
            }
        });
        jPanel2.add(cmdOk);

        cmdCancelar.setText("Cancelar");
        cmdCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdCancelarActionPerformed(evt);
            }
        });
        jPanel2.add(cmdCancelar);

        getContentPane().add(jPanel2, java.awt.BorderLayout.SOUTH);

        pack();
    }// </editor-fold>//GEN-END:initComponents

	private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
		close();
	}//GEN-LAST:event_formWindowClosing

	private void cmdCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdCancelarActionPerformed
		close();
	}//GEN-LAST:event_cmdCancelarActionPerformed

	private void cmdOkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdOkActionPerformed
		String nome = txtNome.getText().trim();
		float precoMax, precoMin;
		int prazoMax, qualidadeMin;

		// Validar os dados
		if(nome.length() == 0) {
			JOptionPane.showMessageDialog(null, "Indique um nome de produto.", agente.nome, JOptionPane.INFORMATION_MESSAGE);
			return;
		}

		try {
			precoMax = Float.parseFloat(txtPrecoMax.getText());
			precoMin = Float.parseFloat(txtPrecoMin.getText());
		}
		catch(NumberFormatException ex) {
			JOptionPane.showMessageDialog(null, "Indique dois valores numéricos para os preços máximo e mínimo do produto.", agente.nome, JOptionPane.INFORMATION_MESSAGE);
			return;
		}

		try {
			prazoMax = Integer.parseInt(txtPrazoMax.getText());
		}
		catch(NumberFormatException ex) {
			JOptionPane.showMessageDialog(null, "Indique um valor inteiro para o prazo máximo de entrega.", agente.nome, JOptionPane.INFORMATION_MESSAGE);
			return;
		}

		if(precoMax <= 0.0 || precoMin <= 0.0 || prazoMax <= 0) {
			JOptionPane.showMessageDialog(null, "Indique valores positivos para os preços mínimo e máximo e para o prazo máximo de entrega.", agente.nome, JOptionPane.INFORMATION_MESSAGE);
			return;
		}

		if(precoMax <= precoMin) {
			JOptionPane.showMessageDialog(null, "O preço máximo tem que ser maior do que o preço mínimo.", agente.nome, JOptionPane.INFORMATION_MESSAGE);
			return;
		}

		try {
			qualidadeMin = Integer.parseInt(txtQualidadeMin.getText());
		}
		catch(NumberFormatException ex) {
			JOptionPane.showMessageDialog(null, "Indique um valor inteiro para a qualidade mínima.", agente.nome, JOptionPane.INFORMATION_MESSAGE);
			return;
		}

		if(qualidadeMin < 1 || qualidadeMin > 5) {
			JOptionPane.showMessageDialog(null, "A qualidade mínima tem que estar entre 1 e 5.", agente.nome, JOptionPane.INFORMATION_MESSAGE);
			return;
		}
		
		agente.start(nome, precoMax, precoMin, prazoMax, qualidadeMin);
		okClicked = true;
		close();
	}//GEN-LAST:event_cmdOkActionPerformed

	private void close() {
		if(!okClicked)
			agente.stop();
		dispose();
	}

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton cmdCancelar;
    private javax.swing.JButton cmdOk;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JLabel lblNome;
    private javax.swing.JLabel lblPrazoMax;
    private javax.swing.JLabel lblPrecoMax;
    private javax.swing.JLabel lblPrecoMin;
    private javax.swing.JLabel lblQualidadeMin;
    private javax.swing.JTextField txtNome;
    private javax.swing.JTextField txtPrazoMax;
    private javax.swing.JTextField txtPrecoMax;
    private javax.swing.JTextField txtPrecoMin;
    private javax.swing.JTextField txtQualidadeMin;
    // End of variables declaration//GEN-END:variables

}
